/** 数组类型定义 */
var list1 = [1, 2, 3, 4, 5]; //数字类型的数组
// console.log(list1);
var list2 = [1, 2, 3, 4, 5]; //利用数组泛型声明数组
// console.log(list2);
var list3 = ['Huang', 'bing'];
// console.log(list3);
/** 元组 */
var list4; //数量都是严格要求的
list4 = ['hardy', 20];
// list4[4] = 'bing';
// console.log(list4);    //[ 'hardy', 20, <2 empty items>, 'bing' ]
/** 枚举 enum */
var Color;
(function (Color) {
    Color[Color["Red"] = 1] = "Red";
    Color[Color["Green"] = 2] = "Green";
    Color[Color["Blue"] = 3] = "Blue";
})(Color || (Color = {}));
var colorName = Color[2];
// console.log(colorName);
/** any 是一把双刃剑，跳过语法检查 */
var list5 = [1, true, 'hardy', function () { }];
// console.log(list5);
/** void  没有返回值的函数 */
function voidUser() {
    console.log('no void function');
}
/** 联合类型 */
var num = 3;
num = null;
/** never 代表从来不会出现的值的类型*/
// 返回 never 的函数必须有无法被执行到的终止点
function error(message) {
    throw new Error(message);
}
// 推断的返回值是 never
function fail() {
    return error("一些东西失败了");
}
// 返回 never 的函数必须有无法被执行到的终止点
function infiniteLoop() {
    while (true) {
    }
}
// create({name: 'hardy'});
// create(null);
// create(19);
/** 类型转化 */
var someValue = 'some string value';
var someValueLen1 = someValue.length;
var someValueLen2 = someValue.length;
console.log(someValueLen1, someValueLen2);
